HSTS (HTTP Strict Transport Security) এবং Content Security Policy (CSP) কনফিগারেশন

Java Technologies - স্প্রিং সিকিউরিটি (Spring Security) - Spring Security এবং Security Headers
166

HSTS (HTTP Strict Transport Security) এবং CSP (Content Security Policy) হল দুইটি গুরুত্বপূর্ণ নিরাপত্তা বৈশিষ্ট্য যা আপনার অ্যাপ্লিকেশনকে অনলাইন আক্রমণ যেমন man-in-the-middle attacks এবং cross-site scripting (XSS) থেকে রক্ষা করতে সহায়ক। স্প্রিং সিকিউরিটি দিয়ে সহজেই আপনি এই দুটি নিরাপত্তা পলিসি কনফিগার করতে পারেন।


1. HTTP Strict Transport Security (HSTS)

HSTS একটি HTTP হেডার যা ব্রাউজারকে নির্দেশ দেয় শুধুমাত্র HTTPS ব্যবহার করতে এবং HTTP ব্যবহার করতে নিরুৎসাহিত করে। এটি SSL Stripping আক্রমণ প্রতিরোধে সহায়ক।

HSTS কীভাবে কাজ করে?

  • ব্রাউজার যখন প্রথমবার HTTPS ব্যবহার করে আপনার সাইটে প্রবেশ করে, তখন সার্ভার একটি HSTS হেডার পাঠায় যা ব্রাউজারকে বলে যে, পরবর্তী কিছু সময়ের জন্য এই সাইটে কেবল HTTPS ব্যবহার করতে হবে।
  • এর মাধ্যমে, HTTP থেকে HTTPS-এ ডাউনগ্রেড হওয়া সম্ভব নয় এবং এটি Man-in-the-middle (MITM) আক্রমণ প্রতিরোধে সাহায্য করে।

Spring Security তে HSTS কনফিগারেশন

স্প্রিং সিকিউরিটিতে HSTS কনফিগার করতে HttpSecurity এর httpStrictTransportSecurity() মেথড ব্যবহার করা হয়।

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/", "/home").permitAll()
                .anyRequest().authenticated()
            .and()
            .formLogin()
            .and()
            .logout()
                .permitAll()
            .and()
            .httpStrictTransportSecurity()
                .includeSubDomains(true) // Subdomains also require HTTPS
                .maxAgeInSeconds(31536000); // Cache HSTS header for 1 year
    }
}

HSTS Key Parameters:

  • includeSubDomains(true): এটি সাবডোমেইনগুলিতেও HTTPS প্রয়োগ করে।
  • maxAgeInSeconds(31536000): HSTS হেডারটি কতো সময় (in seconds) ব্রাউজারে থাকতে হবে (এখানে 1 বছর দেওয়া হয়েছে)।

2. Content Security Policy (CSP)

Content Security Policy (CSP) একটি নিরাপত্তা ফিচার যা আপনার ওয়েব পেজে অনুমোদিত কন্টেন্ট সোর্সের তালিকা নির্ধারণ করে। এটি Cross-Site Scripting (XSS) এবং data injection attacks এর বিরুদ্ধে সুরক্ষা প্রদান করে।

CSP কীভাবে কাজ করে?

CSP হেডারটি ওয়েব পেজের জন্য নির্ধারিত কন্টেন্ট সোর্স বা রিসোর্স লোডিং পলিসি নির্ধারণ করে। এটি স্পষ্টভাবে নির্ধারণ করে কোন উৎস (source) থেকে স্ক্রিপ্ট, স্টাইল, ছবি বা অন্যান্য রিসোর্স লোড করা যাবে এবং কোন উৎস থেকে লোড করা যাবে না।

Spring Security তে CSP কনফিগারেশন

স্প্রিং সিকিউরিটিতে CSP কনফিগার করার জন্য HttpSecurity তে একটি কাস্টম হেডার যোগ করা যায়।

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/", "/home").permitAll()  // Public URLs
                .anyRequest().authenticated()          // Other URLs require authentication
            .and()
            .formLogin()  // Enable form login
            .and()
            .logout()  // Enable logout
            .and()
            .headers()
                .contentSecurityPolicy("default-src 'self'; " +
                                        "script-src 'self' 'unsafe-inline' 'unsafe-eval'; " +
                                        "style-src 'self' 'unsafe-inline'; " +
                                        "img-src 'self'; " +
                                        "font-src 'self'; " +
                                        "connect-src 'self'; " +
                                        "frame-ancestors 'none'; " +
                                        "base-uri 'self'; " +
                                        "form-action 'self';");  // CSP header
    }
}

CSP Policy Explanation:

  • default-src 'self': শুধুমাত্র বর্তমান ডোমেইন থেকে কন্টেন্ট লোড করার অনুমতি।
  • script-src 'self' 'unsafe-inline': স্ক্রিপ্ট শুধু বর্তমান ডোমেইন থেকে লোড হবে, এবং inline স্ক্রিপ্টও অনুমোদিত।
  • style-src 'self' 'unsafe-inline': স্টাইল শুধুমাত্র বর্তমান ডোমেইন থেকে লোড হবে, এবং inline স্টাইলও অনুমোদিত।
  • img-src 'self': শুধুমাত্র বর্তমান ডোমেইন থেকে ইমেজ লোড হবে।
  • font-src 'self': শুধুমাত্র বর্তমান ডোমেইন থেকে ফন্ট লোড হবে।
  • frame-ancestors 'none': কোনোভাবেই এই পেজটি iframe এ লোড হতে পারবে না।
  • base-uri 'self': base ট্যাগ ব্যবহার করার অনুমতি শুধুমাত্র বর্তমান ডোমেইন থেকে।
  • form-action 'self': শুধুমাত্র বর্তমান ডোমেইনে ফর্ম সাবমিট করা যাবে।

3. HSTS এবং CSP একসাথে কনফিগার করা

স্প্রিং সিকিউরিটিতে আপনি সহজেই HSTS এবং CSP একসাথে কনফিগার করতে পারেন। নিচে উল্লিখিত কোডে উভয় নিরাপত্তা বৈশিষ্ট্য একসাথে কনফিগার করা হয়েছে।

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/", "/home").permitAll()  // Public URLs
                .anyRequest().authenticated()          // All other URLs need authentication
            .and()
            .formLogin()  // Enable form login
            .and()
            .logout()  // Enable logout
            .and()
            .headers()
                .httpStrictTransportSecurity()
                    .includeSubDomains(true)  // HSTS: Apply to subdomains
                    .maxAgeInSeconds(31536000)  // HSTS: Cache for 1 year
                .and()
                .contentSecurityPolicy("default-src 'self'; " +
                                        "script-src 'self' 'unsafe-inline' 'unsafe-eval'; " +
                                        "style-src 'self' 'unsafe-inline'; " +
                                        "img-src 'self'; " +
                                        "font-src 'self'; " +
                                        "connect-src 'self'; " +
                                        "frame-ancestors 'none'; " +
                                        "base-uri 'self'; " +
                                        "form-action 'self';");  // CSP: Define resource loading rules
    }
}

4. HSTS এবং CSP এর সুবিধা

  • HSTS (HTTP Strict Transport Security):
    • SSL Stripping আক্রমণ প্রতিরোধে সহায়ক।
    • ব্রাউজারকে HTTPS ব্যবহার করার জন্য বাধ্য করে, HTTP ব্যবহার অগ্রহণযোগ্য করে।
    • সাইটের নিরাপত্তা বৃদ্ধি করে।
  • CSP (Content Security Policy):
    • XSS (Cross-Site Scripting) এবং data injection আক্রমণ প্রতিরোধে সহায়ক।
    • নির্দিষ্ট সোর্স থেকে কন্টেন্ট লোড করার অনুমতি দেয়, অন্যথায় নিষিদ্ধ করে।

উপসংহার

HSTS এবং CSP হল অত্যন্ত গুরুত্বপূর্ণ নিরাপত্তা বৈশিষ্ট্য যা ওয়েব অ্যাপ্লিকেশনের নিরাপত্তা নিশ্চিত করতে সহায়ক। স্প্রিং সিকিউরিটিতে এই দুটি ফিচার কনফিগার করে আপনি আপনার অ্যাপ্লিকেশনকে man-in-the-middle attacks, XSS, এবং অন্যান্য সাইবার আক্রমণ থেকে সুরক্ষিত রাখতে পারবেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...